package ihm_clarifiee.application;

import java.io.FileOutputStream;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

import ihm_clarifiee.sauvegarde.*;

public abstract class SaveAndRestore<T,U> {
	
	protected SaveAndRestore<T,U> nextToSave;  //pattern chain of responsability ??
	
//  Sauvegarde
	protected CareTaker<T> careTaker;
	protected Originator<T> originator;
	
	/**
	 * sauvegarde de l'�tat
	 */
	public abstract void save();
	
	public abstract void saveToXML(String nomRepertoire);
//	public abstract U restoreFromXML(String nomFichier);
	
	/**
	 * restauration de l'�tat
	 */
	public abstract void restore();
	
	public void setNextToSave(SaveAndRestore<T,U> nextToSave){
		this.nextToSave = nextToSave;
	}
	
	/**
	 * Enregistre le document courant dans un fichier XML
	 * @param fichier : nom du fichier
	 */
	protected void enregistre(String fichier,Document document){
		   try
		   {
		      XMLOutputter sortie = new XMLOutputter(Format.getPrettyFormat());
		      sortie.output(document, new FileOutputStream(fichier));
		   }
		   catch (java.io.IOException e){}
	}//enregistre
	
	public abstract String getNomFichier();
}
